// 接口返回数据类型
export interface ResponseData {
  code: number
  message: string
  ok: boolean
}

// SPU数据的ts类型
export interface SPUData {
  id?: number
  spuName: string
  description: string
  category3Id: string | number
  tmId: number | string
  spuSaleAttrList: null | SaleAttr[]
  spuImageList: null | SPUImage[]
}

// 数组包含元素都是已有的SPU数据的ts类型
export type Records = SPUData[]

// 获取已有的SPU数据的接口返回的数据
export interface HasSpuResponseData extends ResponseData {
  data: {
    records: Records
    total: number
    size: number
    current: number
    searchCount: boolean
    pages: number
  }
}

// 品牌数据的TS类型
export interface Trademark {
  id: number
  tmName: string
  logoUrl: string
}

// 获取所有品牌接口返回数据的TS类型
export interface AllTrademark extends ResponseData {
  data: Trademark[]
}

// 商品图片的ts类型
export interface SPUImage {
  id?: number
  imgName?: string
  imgUrl?: string
  spuId?: number
  createTime?: string
  updateTime?: string
  name?: string
  url?: string
}

// 已有的SPU图片接口返回的ts类型
export interface SpuHasImg extends ResponseData {
  data: SPUImage[]
}

// 已有的SPU销售属性
export interface SaleAttrValue {
  id?: number
  createTime?: null
  updateTime?: null
  spuId?: number
  baseSaleAttrId: number | string
  saleAttrValueName: string
  saleAttrName?: string
  isChecked?: null
}

// 存储已有的销售属性值数组类型
export type SpuSaleAttrValueList = SaleAttrValue[]

// 销售属性对象ts类型
export interface SaleAttr {
  saleAttrValue?: string
  id?: number
  createTime?: null
  updateTime?: null
  spuId?: number
  baseSaleAttrId: number | string
  saleAttrName: string
  spuSaleAttrValueList: SpuSaleAttrValueList
  isEdit?: boolean
}

// 已有的SPU销售属性接口返回的ts类型
export interface SaleAttrResponseData extends ResponseData {
  data: SaleAttr[]
}

// 已有的全部SPU的返回数据ts类型
export interface HasSaleAttr {
  id: number
  name: string
}

export interface HasSaleAttrResponseData extends ResponseData {
  data: HasSaleAttr[]
}

export interface skuAttrValue {
  attrId: number | string
  valueId: number | string
}

export type SkuAttrValueList = skuAttrValue[]

export interface skuSaleAttrValue {
  saleAttrId: number | string
  saleAttrValueId: number | string
}

export type SkuSaleAttrValueList = skuSaleAttrValue[]

export interface SkuData {
  category3Id: number | string
  spuId: string | number
  tmId: string | number
  skuName: string
  price: string | number
  weight: string | number
  skuDesc: string
  skuAttrValueList: SkuAttrValueList
  skuSaleAttrValueList: SkuSaleAttrValueList
  skuDefaultImg: string
}

// 根据spuId获取已有的sku数据的接口返回数据的ts类型
export interface SkuInfoData extends ResponseData {
  data: SkuData[]
}
